package com.colt.contentcenter;

import com.alibaba.cloud.sentinel.annotation.SentinelRestTemplate;
import com.colt.contentcenter.config.UserCenterFeighConfiguration;
import com.colt.contentcenter.mq.rabbitmq.source.Barista;
import com.colt.contentcenter.mq.rabbitmq.source.RabbitTestSource;
import com.colt.contentcenter.mq.rocketmq.source.CostBonusSource;
import com.colt.contentcenter.sentineldemo.TestControllerBlockHandlerClass;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.cloud.stream.annotation.EnableBinding;
import org.springframework.cloud.stream.messaging.Source;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;
import tk.mybatis.spring.annotation.MapperScan;

import java.util.Collections;

//扫描mybatis哪些包里面的注解
@MapperScan("com.colt.contentcenter.dao")
@SpringBootApplication
@EnableFeignClients(defaultConfiguration = UserCenterFeighConfiguration.class)
@EnableBinding({Source.class, CostBonusSource.class})
public class ContentCenterApplication {

    public static void main(String[] args) {
        SpringApplication.run(ContentCenterApplication.class, args);
    }
    //在spring中创建一个对象 类型RestTemplate 名称
    //<bean id = restTemplate class = RestTemplate/>

    @Bean
    @LoadBalanced//ribbion 负载均衡
    @SentinelRestTemplate(blockHandler = "handleException",blockHandlerClass = TestControllerBlockHandlerClass.class)
    public RestTemplate restTemplate(){
        RestTemplate template = new RestTemplate();
        template.setInterceptors(
                Collections.singletonList(new TestREstTemplateTokenRelayInterceptor()));
        return template;
    }

}
